package cn.leaf.state;

/**
 *
 * desc: 状态模式测试
 *
 * Spring框架中的应用：
 * Spring Web MVC中的处理器映射和处理器适配器等组件
 * -----------------------------------------
 * Jdk中的应用：
 * Thread类 -> 线程池状态、AbstractQueuedSynchronizer -> 成员变量state
 * ---------------------------------------------------------------
 * 最佳实践：
 * Spring statemachine、Disruptor框架多边形组合操作
 *
 * @author twinkle-leaf
 * @version v1.0.0
 * slogan: There are no two identical leaves in the world.🍃
 *
 */
public class StateTest {
    public static void main(String[] args) {
        Order order = new Order(1, "MacBook Pro", 19999);
        order.confirm();  // 订单已确认！
        order.cancel();  // 订单已取消！
        order.ship();  // 订单未确认，不能发货！
        order.confirm();  // 订单已确认，不能重复确认！
        order.ship();  // 订单已发货！
        order.ship();
    }
}
